home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / EmulationPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  19KB  |  863 lines

  1. /*
  2. **    EmulationPanel.c
  3. **
  4. **    Editing panel for emulation configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_USE=1000, GAD_CANCEL,
  17.             GAD_SCROLL, GAD_JUMP_SCROLL,
  18.             GAD_EDITPENS, GAD_STDPENS,
  19.             GAD_PAGER, GAD_PAGEGROUP, GAD_BBS_ANSI_COMPLIANT,
  20.             GAD_TERMINALTYPE, GAD_CLS_RESETS_CURSOR, GAD_WRAP_CURSOR_MOVES,
  21.             GAD_WRAP_CHARACTERS, GAD_DESTRUCTIVE_BS,
  22.         };
  23.  
  24. STATIC BOOL
  25. EmulationPenPanel(struct Window *Parent,struct Configuration *Config,LONG Depth)
  26. {
  27.     LayoutHandle *Handle;
  28.     UBYTE Attribute[4];
  29.     UBYTE Colours[16];
  30.     UWORD Pen[16];
  31.     BOOL Result;
  32.     LONG i;
  33.  
  34.     Result = FALSE;
  35.  
  36.     for(i = 0 ; i < (1L << Depth) ; i++)
  37.         Colours[i] = MappedPens[0][i];
  38.  
  39.     CopyMem(Config->EmulationConfig->Pens,Pen,sizeof(Pen));
  40.     CopyMem(Config->EmulationConfig->Attributes,Attribute,sizeof(Attribute));
  41.  
  42.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  43.         LAHN_LocaleHook,    &LocaleHook,
  44.         LAHN_ExactClone,    TRUE,
  45.         LAHN_ExitFlush,        FALSE,
  46.     TAG_DONE))
  47.     {
  48.         struct Window *PanelWindow;
  49.  
  50.         LT_New(Handle,
  51.             LA_Type,    VERTICAL_KIND,
  52.         TAG_DONE);
  53.         {
  54.             LT_New(Handle,
  55.                 LA_Type,    HORIZONTAL_KIND,
  56.             TAG_DONE);
  57.             {
  58.                 LT_New(Handle,
  59.                     LA_Type,    VERTICAL_KIND,
  60.                     LA_LabelID,    MSG_PENPANEL_DRAWING_PENS_TXT,
  61.                 TAG_DONE);
  62.                 {
  63.                     LT_New(Handle,
  64.                         LA_Type,            PALETTE_KIND,
  65.                         LA_LabelText,        "_0",
  66.                         GTPA_Depth,            Depth,
  67.                         GTPA_ColorTable,    Colours,
  68.                         LAPA_SmallPalette,    TRUE,
  69.                         LA_UWORD,            &Pen[0],
  70.                     TAG_DONE);
  71.  
  72.                     LT_New(Handle,
  73.                         LA_Type,            PALETTE_KIND,
  74.                         LA_LabelText,        "_1",
  75.                         GTPA_Depth,            Depth,
  76.                         GTPA_ColorTable,    Colours,
  77.                         LAPA_SmallPalette,    TRUE,
  78.                         LA_UWORD,            &Pen[1],
  79.                     TAG_DONE);
  80.  
  81.                     if(Depth > 1)
  82.                     {
  83.                         LT_New(Handle,
  84.                             LA_Type,            PALETTE_KIND,
  85.                             LA_LabelText,        "_2",
  86.                             GTPA_Depth,            Depth,
  87.                             GTPA_ColorTable,    Colours,
  88.                             LAPA_SmallPalette,    TRUE,
  89.                             LA_UWORD,            &Pen[2],
  90.                         TAG_DONE);
  91.  
  92.                         LT_New(Handle,
  93.                             LA_Type,            PALETTE_KIND,
  94.                             LA_LabelText,        "_3",
  95.                             GTPA_Depth,            Depth,
  96.                             GTPA_ColorTable,    Colours,
  97.                             LAPA_SmallPalette,    TRUE,
  98.                             LA_UWORD,            &Pen[3],
  99.                         TAG_DONE);
  100.                     }
  101.  
  102.                     if(Depth > 2)
  103.                     {
  104.                         LT_New(Handle,
  105.                             LA_Type,            PALETTE_KIND,
  106.                             LA_LabelText,        "_4",
  107.                             GTPA_Depth,            Depth,
  108.                             GTPA_ColorTable,    Colours,
  109.                             LAPA_SmallPalette,    TRUE,
  110.                             LA_UWORD,            &Pen[4],
  111.                         TAG_DONE);
  112.  
  113.                         LT_New(Handle,
  114.                             LA_Type,            PALETTE_KIND,
  115.                             LA_LabelText,        "_5",
  116.                             GTPA_Depth,            Depth,
  117.                             GTPA_ColorTable,    Colours,
  118.                             LAPA_SmallPalette,    TRUE,
  119.                             LA_UWORD,            &Pen[5],
  120.                         TAG_DONE);
  121.  
  122.                         LT_New(Handle,
  123.                             LA_Type,            PALETTE_KIND,
  124.                             LA_LabelText,        "_6",
  125.                             GTPA_Depth,            Depth,
  126.                             GTPA_ColorTable,    Colours,
  127.                             LAPA_SmallPalette,    TRUE,
  128.                             LA_UWORD,            &Pen[6],
  129.                         TAG_DONE);
  130.  
  131.                         LT_New(Handle,
  132.                             LA_Type,            PALETTE_KIND,
  133.                             LA_LabelText,        "_7",
  134.                             GTPA_Depth,            Depth,
  135.                             GTPA_ColorTable,    Colours,
  136.                             LAPA_SmallPalette,    TRUE,
  137.                             LA_UWORD,            &Pen[7],
  138.                         TAG_DONE);
  139.                     }
  140.  
  141.                     LT_EndGroup(Handle);
  142.                 }
  143.  
  144.                 LT_New(Handle,
  145.                     LA_Type,    VERTICAL_KIND,
  146.                     LA_LabelID,    MSG_ATTRIBUTES_TXT,
  147.                 TAG_DONE);
  148.                 {
  149.                     LT_New(Handle,
  150.                         LA_Type,        CYCLE_KIND,
  151.                         LA_LabelID,        MSG_ATTRIBUTE1_GAD,
  152.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  153.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  154.                         LA_UBYTE,        &Attribute[TEXTATTR_UNDERLINE],
  155.                     TAG_DONE);
  156.  
  157.                     LT_New(Handle,
  158.                         LA_Type,        CYCLE_KIND,
  159.                         LA_LabelID,        MSG_ATTRIBUTE2_GAD,
  160.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  161.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  162.                         LA_UBYTE,        &Attribute[TEXTATTR_HIGHLIGHT],
  163.                     TAG_DONE);
  164.  
  165.                     LT_New(Handle,
  166.                         LA_Type,        CYCLE_KIND,
  167.                         LA_LabelID,        MSG_ATTRIBUTE3_GAD,
  168.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  169.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  170.                         LA_UBYTE,        &Attribute[TEXTATTR_BLINK],
  171.                     TAG_DONE);
  172.  
  173.                     LT_New(Handle,
  174.                         LA_Type,        CYCLE_KIND,
  175.                         LA_LabelID,        MSG_ATTRIBUTE4_GAD,
  176.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  177.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  178.                         LA_UBYTE,        &Attribute[TEXTATTR_INVERSE],
  179.                     TAG_DONE);
  180.  
  181.                     LT_EndGroup(Handle);
  182.                 }
  183.  
  184.                 LT_EndGroup(Handle);
  185.             }
  186.  
  187.             LT_New(Handle,
  188.                 LA_Type,VERTICAL_KIND,
  189.             TAG_DONE);
  190.             {
  191.                 LT_New(Handle,
  192.                     LA_Type,        XBAR_KIND,
  193.                     LAXB_FullSize,    TRUE,
  194.                 TAG_DONE);
  195.  
  196.                 LT_EndGroup(Handle);
  197.             }
  198.  
  199.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  200.                 LAGR_SameSize,    TRUE,
  201.                 LAGR_Spread,    TRUE,
  202.             TAG_DONE);
  203.             {
  204.                 LT_New(Handle,
  205.                     LA_Type,        BUTTON_KIND,
  206.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  207.                     LA_ID,            GAD_USE,
  208.                     LABT_ReturnKey,    TRUE,
  209.                     LABT_ExtraFat,    TRUE,
  210.                 TAG_DONE);
  211.  
  212.                 LT_New(Handle,
  213.                     LA_Type,        BUTTON_KIND,
  214.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  215.                     LA_ID,            GAD_CANCEL,
  216.                     LABT_EscKey,    TRUE,
  217.                     LABT_ExtraFat,    TRUE,
  218.                 TAG_DONE);
  219.  
  220.                 LT_EndGroup(Handle);
  221.             }
  222.  
  223.             LT_EndGroup(Handle);
  224.         }
  225.  
  226.         if(PanelWindow = LT_Build(Handle,
  227.             LAWN_TitleID,        MSG_PENPANEL_SCREEN_DRAWING_PENS_TXT,
  228.             LAWN_HelpHook,        &GuideHook,
  229.             LAWN_Parent,        Parent,
  230.             WA_DepthGadget,        TRUE,
  231.             WA_DragBar,            TRUE,
  232.             WA_RMBTrap,            TRUE,
  233.             WA_Activate,        TRUE,
  234.             WA_SimpleRefresh,    TRUE,
  235.         TAG_DONE))
  236.         {
  237.             struct IntuiMessage    *Message;
  238.             struct Gadget *MsgGadget;
  239.             ULONG MsgClass;
  240.             BOOL Done;
  241.  
  242.             PushWindow(PanelWindow);
  243.  
  244.             LT_ShowWindow(Handle,TRUE);
  245.  
  246.             GuideContext(CONTEXT_TEXTPEN_PANEL);
  247.  
  248.             Done = FALSE;
  249.  
  250.             do
  251.             {
  252.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  253.                     break;
  254.  
  255.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  256.                 {
  257.                     MsgClass    = Message->Class;
  258.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  259.  
  260.                     LT_ReplyIMsg(Message);
  261.  
  262.                     if(MsgClass == IDCMP_GADGETUP)
  263.                     {
  264.                         switch(MsgGadget->GadgetID)
  265.                         {
  266.                             case GAD_USE:
  267.  
  268.                                 CopyMem(Pen,Config->EmulationConfig->Pens,sizeof(Pen));
  269.                                 CopyMem(Attribute,Config->EmulationConfig->Attributes,sizeof(Attribute));
  270.  
  271.                                 Result = Done = TRUE;
  272.                                 break;
  273.  
  274.                             case GAD_CANCEL:
  275.  
  276.                                 Done = TRUE;
  277.                                 break;
  278.                         }
  279.                     }
  280.                 }
  281.             }
  282.             while(!Done);
  283.  
  284.             PopWindow();
  285.         }
  286.  
  287.         LT_DeleteHandle(Handle);
  288.     }
  289.  
  290.     return(Result);
  291. }
  292.  
  293. BOOL
  294. EmulationPanel(struct Window *Parent,struct Configuration *LocalConfig)
  295. {
  296.     STATIC LONG PageTitleID[5] =
  297.     {
  298.         MSG_V36_0035,
  299.         MSG_V36_0034,
  300.         MSG_V36_0036,
  301.         MSG_PENPANEL_DRAWING_PENS_TXT,
  302.         -1
  303.     };
  304.  
  305.     STATIC BYTE InitialPage = 0;
  306.  
  307.     LONG Depth,CurrentDepth;
  308.     LayoutHandle *Handle;
  309.     STRPTR PageTitle[5];
  310.     BOOL PenChoices;
  311.     BOOL UseIt;
  312.  
  313.     UseIt = FALSE;
  314.  
  315.     LocalizeStringTable(PageTitle,PageTitleID);
  316.  
  317.     SaveConfig(LocalConfig,PrivateConfig);
  318.  
  319.     if(PrivateConfig->ScreenConfig->UseWorkbench || PrivateConfig->ScreenConfig->ShareScreen)
  320.         PenChoices = FALSE;
  321.     else
  322.         PenChoices = TRUE;
  323.  
  324.     switch(PrivateConfig->ScreenConfig->ColourMode)
  325.     {
  326.         case COLOUR_MONO:
  327.  
  328.             Depth = 1;
  329.             break;
  330.  
  331.         case COLOUR_AMIGA:
  332.  
  333.             Depth = 2;
  334.             break;
  335.  
  336.         case COLOUR_EIGHT:
  337.  
  338.             Depth = 3;
  339.             break;
  340.  
  341.         case COLOUR_SIXTEEN:
  342.  
  343.             Depth = 4;
  344.             break;
  345.     }
  346.  
  347.     switch(Config->ScreenConfig->ColourMode)
  348.     {
  349.         case COLOUR_MONO:
  350.  
  351.             CurrentDepth = 1;
  352.             break;
  353.  
  354.         case COLOUR_AMIGA:
  355.  
  356.             CurrentDepth = 2;
  357.             break;
  358.  
  359.         case COLOUR_EIGHT:
  360.  
  361.             CurrentDepth = 3;
  362.             break;
  363.  
  364.         case COLOUR_SIXTEEN:
  365.  
  366.             CurrentDepth = 4;
  367.             break;
  368.     }
  369.  
  370.     if(Depth != CurrentDepth || !PenChoices)
  371.     {
  372.         PageTitle[3] = NULL;
  373.  
  374.         if(InitialPage == 4)
  375.             InitialPage = 3;
  376.     }
  377.     else
  378.         PageTitle[4] = NULL;
  379.  
  380.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  381.         LAHN_LocaleHook,    &LocaleHook,
  382.         LAHN_ExactClone,    TRUE,
  383.     TAG_DONE))
  384.     {
  385.         struct Window *PanelWindow;
  386.  
  387.         LT_New(Handle,
  388.             LA_Type,    VERTICAL_KIND,
  389.         TAG_DONE);
  390.         {
  391.             LT_New(Handle,
  392.                 LA_Type,VERTICAL_KIND,
  393.             TAG_DONE);
  394.             {
  395.                 LT_New(Handle,
  396.                     LA_Type,        TAB_KIND,
  397.                     LA_ID,            GAD_PAGER,
  398.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  399.                     GTCY_Labels,    PageTitle,
  400.                     LACY_AutoPageID,GAD_PAGEGROUP,
  401.                     LACY_TabKey,    TRUE,
  402.                     LA_BYTE,        &InitialPage,
  403.                     LATB_FullWidth,    TRUE,
  404.                 TAG_DONE);
  405.  
  406.                 LT_EndGroup(Handle);
  407.             }
  408.  
  409.             LT_New(Handle,
  410.                 LA_Type,        VERTICAL_KIND,
  411.                 LA_ID,            GAD_PAGEGROUP,
  412.                 LAGR_ActivePage,InitialPage,
  413.             TAG_DONE);
  414.             {
  415.                 LT_New(Handle,
  416.                     LA_Type,    VERTICAL_KIND,
  417.                 TAG_DONE);
  418.                 {
  419.                     LT_New(Handle,
  420.                         LA_Type,    VERTICAL_KIND,
  421.                     TAG_DONE);
  422.                     {
  423.                         LT_New(Handle,
  424.                             LA_Type,        CHECKBOX_KIND,
  425.                             LA_LabelID,        MSG_BBS_ANSI_COMPLIANT_TXT,
  426.                             LA_ID,            GAD_BBS_ANSI_COMPLIANT,
  427.                             GTCB_Checked,    PrivateConfig->EmulationConfig->CLSResetsCursor && PrivateConfig->EmulationConfig->CursorWrap && PrivateConfig->EmulationConfig->LineWrap && PrivateConfig->EmulationConfig->TerminalType == TERMINAL_VT102 && !PrivateConfig->EmulationConfig->DestructiveBackspace,
  428.                         TAG_DONE);
  429.  
  430.                         LT_New(Handle,
  431.                             LA_Type,        XBAR_KIND,
  432.                         TAG_DONE);
  433.  
  434.                         LT_EndGroup(Handle);
  435.                     }
  436.  
  437.                     LT_New(Handle,
  438.                         LA_Type,    HORIZONTAL_KIND,
  439.                     TAG_DONE);
  440.                     {
  441.                         LT_New(Handle,
  442.                             LA_Type,    VERTICAL_KIND,
  443.                         TAG_DONE);
  444.                         {
  445.                             LT_New(Handle,
  446.                                 LA_Type,    CHECKBOX_KIND,
  447.                                 LA_LabelID,    MSG_EMULATIONPANEL_WRAP_CHARACTERS_GAD,
  448.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->LineWrap,
  449.                                 LA_ID,        GAD_WRAP_CHARACTERS,
  450.                             TAG_DONE);
  451.  
  452.                             LT_New(Handle,
  453.                                 LA_Type,    CHECKBOX_KIND,
  454.                                 LA_LabelID,    MSG_LOCK_WRAPPING_GAD,
  455.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->LockWrapping,
  456.                             TAG_DONE);
  457.  
  458.                             LT_New(Handle,
  459.                                 LA_Type,    CHECKBOX_KIND,
  460.                                 LA_LabelID,    MSG_EMULATIONPANEL_INSERT_MODE_GAD,
  461.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->InsertMode,
  462.                             TAG_DONE);
  463.  
  464.                             LT_New(Handle,
  465.                                 LA_Type,    CHECKBOX_KIND,
  466.                                 LA_LabelID,    MSG_EMULATIONPANEL_NEW_LINE_MODE_GAD,
  467.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->NewLineMode,
  468.                             TAG_DONE);
  469.  
  470.                             LT_EndGroup(Handle);
  471.                         }
  472.  
  473.                         LT_New(Handle,
  474.                             LA_Type,    VERTICAL_KIND,
  475.                         TAG_DONE);
  476.                         {
  477.                             LT_New(Handle,
  478.                                 LA_Type,    CHECKBOX_KIND,
  479.                                 LA_LabelID,    MSG_EMULATIONPANEL_CLS_RESETS_CURSOR_GAD,
  480.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->CLSResetsCursor,
  481.                                 LA_ID,        GAD_CLS_RESETS_CURSOR,
  482.                             TAG_DONE);
  483.  
  484.                             LT_New(Handle,
  485.                                 LA_Type,    CHECKBOX_KIND,
  486.                                 LA_LabelID,    MSG_EMULATIONPANEL_PRINTER_CONTROL_GAD,
  487.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->PrinterEnabled,
  488.                             TAG_DONE);
  489.  
  490.                             LT_New(Handle,
  491.                                 LA_Type,    CHECKBOX_KIND,
  492.                                 LA_LabelID,    MSG_LOCK_STYLE_GAD,
  493.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->LockStyle,
  494.                             TAG_DONE);
  495.  
  496.                             LT_New(Handle,
  497.                                 LA_Type,    CHECKBOX_KIND,
  498.                                 LA_LabelID,    MSG_LOCK_COLOUR_GAD,
  499.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->LockColour,
  500.                             TAG_DONE);
  501.  
  502.                             LT_EndGroup(Handle);
  503.                         }
  504.  
  505.                         LT_EndGroup(Handle);
  506.                     }
  507.  
  508.                     LT_New(Handle,
  509.                         LA_Type,    VERTICAL_KIND,
  510.                     TAG_DONE);
  511.                     {
  512.                         LT_New(Handle,
  513.                             LA_Type,    CHECKBOX_KIND,
  514.                             LA_LabelID,    MSG_EMULATIONPANEL_WRAP_CURSOR_MOVES_GAD,
  515.                             LA_BYTE,    &PrivateConfig->EmulationConfig->CursorWrap,
  516.                             LA_ID,        GAD_WRAP_CURSOR_MOVES,
  517.                         TAG_DONE);
  518.  
  519.                         LT_EndGroup(Handle);
  520.                     }
  521.  
  522.                     LT_New(Handle,
  523.                         LA_Type,    VERTICAL_KIND,
  524.                     TAG_DONE);
  525.                     {
  526.                         LT_New(Handle,
  527.                             LA_Type,    XBAR_KIND,
  528.                         TAG_DONE);
  529.  
  530.                         LT_New(Handle,
  531.                             LA_Type,        CYCLE_KIND,
  532.                             LA_LabelID,        MSG_TERMINALTYPE_TXT,
  533.                             LA_BYTE,        &PrivateConfig->EmulationConfig->TerminalType,
  534.                             LACY_FirstLabel,MSG_TERMINALTYPE_VT200_TXT,
  535.                             LACY_LastLabel,    MSG_TERMINALTYPE_VT100_TXT,
  536.                             LA_ID,            GAD_TERMINALTYPE,
  537.                         TAG_DONE);
  538.  
  539.                         LT_EndGroup(Handle);
  540.                     }
  541.  
  542.                     LT_EndGroup(Handle);
  543.                 }
  544.  
  545.                 LT_New(Handle,
  546.                     LA_Type,    VERTICAL_KIND,
  547.                 TAG_DONE);
  548.                 {
  549.                     LT_New(Handle,
  550.                         LA_Type,        CYCLE_KIND,
  551.                         LA_LabelID,        MSG_EMULATIONPANEL_CURSOR_KEYS_GAD,
  552.                         LA_BYTE,        &PrivateConfig->EmulationConfig->CursorMode,
  553.                         LACY_FirstLabel,MSG_EMULATIONPANEL_STANDARD_MODE_TXT,
  554.                         LACY_LastLabel,    MSG_EMULATIONPANEL_APPLICATION_MODE_TXT,
  555.                         LA_Chars,        20,
  556.                     TAG_DONE);
  557.  
  558.                     LT_New(Handle,
  559.                         LA_Type,        CHECKBOX_KIND,
  560.                         LA_LabelID,        MSG_LOCK_CURSOR_KEY_MODE_TXT,
  561.                         LA_BYTE,        &PrivateConfig->EmulationConfig->CursorLocked,
  562.                     TAG_DONE);
  563.  
  564.                     LT_New(Handle,
  565.                         LA_Type,        XBAR_KIND,
  566.                     TAG_DONE);
  567.  
  568.                     LT_New(Handle,
  569.                         LA_Type,        CYCLE_KIND,
  570.                         LA_LabelID,        MSG_EMULATIONPANEL_NUMERIC_KEYPAD_GAD,
  571.                         LA_BYTE,        &PrivateConfig->EmulationConfig->NumericMode,
  572.                         LACY_FirstLabel,MSG_EMULATIONPANEL_STANDARD_MODE_TXT,
  573.                         LACY_LastLabel,    MSG_EMULATIONPANEL_APPLICATION_MODE_TXT,
  574.                     TAG_DONE);
  575.  
  576.                     LT_New(Handle,
  577.                         LA_Type,        CHECKBOX_KIND,
  578.                         LA_LabelID,        MSG_V36_1820,
  579.                         LA_BYTE,        &PrivateConfig->EmulationConfig->KeysLocked,
  580.                     TAG_DONE);
  581.  
  582.                     LT_New(Handle,
  583.                         LA_Type,        XBAR_KIND,
  584.                     TAG_DONE);
  585.  
  586.                     LT_New(Handle,
  587.                         LA_Type,        CHECKBOX_KIND,
  588.                         LA_LabelID,        MSG_EMULATIONPANEL_SWAP_BS_AND_DEL_GAD,
  589.                         LA_BYTE,        &PrivateConfig->EmulationConfig->SwapBSDelete,
  590.                     TAG_DONE);
  591.  
  592.                     LT_EndGroup(Handle);
  593.                 }
  594.  
  595.                 LT_New(Handle,
  596.                     LA_Type,    VERTICAL_KIND,
  597.                 TAG_DONE);
  598.                 {
  599.                     LT_New(Handle,
  600.                         LA_Type,                CHECKBOX_KIND,
  601.                         LA_LabelID,                MSG_LOCK_FONT_MODE_TXT,
  602.                         LA_BYTE,                &PrivateConfig->EmulationConfig->FontLocked,
  603.                     TAG_DONE);
  604.  
  605.                     LT_New(Handle,
  606.                         LA_Type,                CYCLE_KIND,
  607.                         LA_LabelID,                MSG_EMULATIONPANEL_SMOOTH_SCROLLING_GAD,
  608.                         LA_BYTE,                &PrivateConfig->EmulationConfig->ScrollMode,
  609.                         LACY_FirstLabel,        MSG_EMULATIONPANEL_JUMP_TXT,
  610.                         LACY_LastLabel,            MSG_EMULATIONPANEL_SMOOTH_TXT,
  611.                     TAG_DONE);
  612.  
  613.                     LT_New(Handle,
  614.                         LA_Type,                CYCLE_KIND,
  615.                         LA_ID,                    GAD_DESTRUCTIVE_BS,
  616.                         LA_LabelID,                MSG_EMULATIONPANEL_DESTRUCTIVE_BACKSPACE_GAD,
  617.                         LA_BYTE,                &PrivateConfig->EmulationConfig->DestructiveBackspace,
  618.                         LACY_FirstLabel,        MSG_DESTRUCTIVE_BS_OFF_TXT,
  619.                         LACY_LastLabel,            MSG_DESTRUCTIVE_BS_SHIFT_TXT,
  620.                     TAG_DONE);
  621.  
  622.                     LT_New(Handle,
  623.                         LA_Type,                STRING_KIND,
  624.                         LA_LabelID,                MSG_EMULATIONPANEL_ANSWERBACK_MESSAGE_GAD,
  625.                         LA_STRPTR,                PrivateConfig->EmulationConfig->AnswerBack,
  626.                         GTST_MaxChars,            sizeof(PrivateConfig->EmulationConfig->AnswerBack) - 1,
  627.                     TAG_DONE);
  628.  
  629.                     LT_New(Handle,
  630.                         LA_Type,                INTEGER_KIND,
  631.                         LA_LabelID,                MSG_EMULATIONPANEL_PRESCROLL_TXT,
  632.                         LA_UBYTE,                &PrivateConfig->EmulationConfig->MaxScroll,
  633.                         LAIN_Min,                0,
  634.                         LAIN_Max,                255,
  635.                         LA_ID,                    GAD_SCROLL,
  636.                         LAIN_UseIncrementers,    TRUE,
  637.                         GTIN_MaxChars,            3,
  638.                     TAG_DONE);
  639.  
  640.                     LT_New(Handle,
  641.                         LA_Type,                INTEGER_KIND,
  642.                         LA_LabelID,                MSG_EMULATIONPANEL_JUMP_SCROLL_TXT,
  643.                         LA_UBYTE,                &PrivateConfig->EmulationConfig->MaxJump,
  644.                         LAIN_Min,                0,
  645.                         LAIN_Max,                255,
  646.                         LA_ID,                    GAD_JUMP_SCROLL,
  647.                         LAIN_UseIncrementers,    TRUE,
  648.                         GTIN_MaxChars,            3,
  649.                     TAG_DONE);
  650.  
  651.                     LT_EndGroup(Handle);
  652.                 }
  653.  
  654.                 if(PageTitle[3])
  655.                 {
  656.                     LT_New(Handle,
  657.                         LA_Type,    VERTICAL_KIND,
  658.                     TAG_DONE);
  659.                     {
  660.                         LT_New(Handle,
  661.                             LA_Type,    VERTICAL_KIND,
  662.                         TAG_DONE);
  663.                         {
  664.                             LT_New(Handle,
  665.                                 LA_Type,    CHECKBOX_KIND,
  666.                                 LA_LabelID,    MSG_PENPANEL_STANDARDPENS_TXT,
  667.                                 LA_ID,        GAD_STDPENS,
  668.                                 LA_BYTE,    &PrivateConfig->EmulationConfig->UseStandardPens,
  669.                             TAG_DONE);
  670.  
  671.                             LT_EndGroup(Handle);
  672.                         }
  673.  
  674.                         LT_New(Handle,
  675.                             LA_Type,    VERTICAL_KIND,
  676.                         TAG_DONE);
  677.                         {
  678.                             LT_New(Handle,
  679.                                 LA_Type,        BUTTON_KIND,
  680.                                 LA_LabelID,        MSG_PENPANEL_EDITPENS_TXT,
  681.                                 LA_ID,            GAD_EDITPENS,
  682.                                 GA_Disabled,    PrivateConfig->EmulationConfig->UseStandardPens,
  683.                             TAG_DONE);
  684.  
  685.                             LT_EndGroup(Handle);
  686.                         }
  687.  
  688.                         LT_EndGroup(Handle);
  689.                     }
  690.                 }
  691.  
  692.                 LT_EndGroup(Handle);
  693.             }
  694.  
  695.             LT_New(Handle,
  696.                 LA_Type,VERTICAL_KIND,
  697.             TAG_DONE);
  698.             {
  699.                 LT_New(Handle,
  700.                     LA_Type,        XBAR_KIND,
  701.                     LAXB_FullSize,    TRUE,
  702.                 TAG_DONE);
  703.  
  704.                 LT_EndGroup(Handle);
  705.             }
  706.  
  707.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  708.                 LAGR_SameSize,    TRUE,
  709.                 LAGR_Spread,    TRUE,
  710.             TAG_DONE);
  711.             {
  712.                 LT_New(Handle,
  713.                     LA_Type,        BUTTON_KIND,
  714.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  715.                     LA_ID,            GAD_USE,
  716.                     LABT_ReturnKey,    TRUE,
  717.                     LABT_ExtraFat,    TRUE,
  718.                 TAG_DONE);
  719.  
  720.                 LT_New(Handle,
  721.                     LA_Type,        BUTTON_KIND,
  722.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  723.                     LA_ID,            GAD_CANCEL,
  724.                     LABT_EscKey,    TRUE,
  725.                     LABT_ExtraFat,    TRUE,
  726.                 TAG_DONE);
  727.  
  728.                 LT_EndGroup(Handle);
  729.             }
  730.  
  731.             LT_EndGroup(Handle);
  732.         }
  733.  
  734.         if(PanelWindow = LT_Build(Handle,
  735.             LAWN_TitleID,        MSG_EMULATIONPANEL_EMULATION_PREFERENCES_TXT,
  736.             LAWN_HelpHook,        &GuideHook,
  737.             LAWN_Parent,        Parent,
  738.             WA_DepthGadget,        TRUE,
  739.             WA_DragBar,            TRUE,
  740.             WA_RMBTrap,            TRUE,
  741.             WA_Activate,        TRUE,
  742.             WA_SimpleRefresh,    TRUE,
  743.         TAG_DONE))
  744.         {
  745.             struct IntuiMessage    *Message;
  746.             struct Gadget *MsgGadget;
  747.             ULONG MsgClass;
  748.             UWORD MsgCode;
  749.             BOOL Done;
  750.  
  751.             GuideContext(CONTEXT_EMULATION);
  752.  
  753.             PushWindow(PanelWindow);
  754.  
  755.             LT_ShowWindow(Handle,TRUE);
  756.  
  757.             Done = FALSE;
  758.  
  759.             do
  760.             {
  761.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  762.                     break;
  763.  
  764.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  765.                 {
  766.                     MsgClass    = Message->Class;
  767.                     MsgCode        = Message->Code;
  768.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  769.  
  770.                     LT_ReplyIMsg(Message);
  771.  
  772.                     if(MsgClass == IDCMP_GADGETUP)
  773.                     {
  774.                         switch(MsgGadget->GadgetID)
  775.                         {
  776.                             case GAD_STDPENS:
  777.  
  778.                                 LT_SetAttributes(Handle,GAD_EDITPENS,
  779.                                     GA_Disabled,    MsgCode,
  780.                                 TAG_DONE);
  781.  
  782.                                 break;
  783.  
  784.                             case GAD_EDITPENS:
  785.  
  786.                                 LT_LockWindow(PanelWindow);
  787.  
  788.                                 EmulationPenPanel(PanelWindow,PrivateConfig,Depth);
  789.  
  790.                                 LT_UnlockWindow(PanelWindow);
  791.  
  792.                                 break;
  793.  
  794.                             case GAD_USE:
  795.  
  796.                                 LT_UpdateStrings(Handle);
  797.  
  798.                                 UseIt = Done = TRUE;
  799.  
  800.                                 break;
  801.  
  802.                             case GAD_CANCEL:
  803.  
  804.                                 Done = TRUE;
  805.                                 break;
  806.  
  807.                             case GAD_BBS_ANSI_COMPLIANT:
  808.  
  809.                                 if(MsgCode)
  810.                                 {
  811.                                     LT_SetAttributes(Handle,GAD_TERMINALTYPE,
  812.                                         GTCY_Active,    TERMINAL_VT102,
  813.                                     TAG_DONE);
  814.  
  815.                                     LT_SetAttributes(Handle,GAD_CLS_RESETS_CURSOR,
  816.                                         GTCB_Checked,    TRUE,
  817.                                     TAG_DONE);
  818.  
  819.                                     LT_SetAttributes(Handle,GAD_WRAP_CURSOR_MOVES,
  820.                                         GTCB_Checked,    TRUE,
  821.                                     TAG_DONE);
  822.  
  823.                                     LT_SetAttributes(Handle,GAD_WRAP_CHARACTERS,
  824.                                         GTCB_Checked,    TRUE,
  825.                                     TAG_DONE);
  826.  
  827.                                     LT_SetAttributes(Handle,GAD_DESTRUCTIVE_BS,
  828.                                         GTCY_Active,    0,
  829.                                     TAG_DONE);
  830.                                 }
  831.  
  832.                                 break;
  833.  
  834.                             default:
  835.  
  836.                                 LT_SetAttributes(Handle,GAD_BBS_ANSI_COMPLIANT,
  837.                                     GTCB_Checked,    PrivateConfig->EmulationConfig->CLSResetsCursor && PrivateConfig->EmulationConfig->CursorWrap && PrivateConfig->EmulationConfig->LineWrap && PrivateConfig->EmulationConfig->TerminalType == TERMINAL_VT102 && !PrivateConfig->EmulationConfig->DestructiveBackspace,
  838.                                 TAG_DONE);
  839.  
  840.                                 break;
  841.                         }
  842.                     }
  843.                 }
  844.             }
  845.             while(!Done);
  846.  
  847.             PopWindow();
  848.         }
  849.  
  850.         LT_DeleteHandle(Handle);
  851.     }
  852.  
  853.     if(UseIt)
  854.         SwapConfig(LocalConfig,PrivateConfig);
  855.     else
  856.         SaveConfig(LocalConfig,PrivateConfig);
  857.  
  858.     if(LocalConfig == Config && UseIt)
  859.         ScreenSizeStuff();
  860.  
  861.     return(UseIt);
  862. }
  863.